package com.tcu.user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tcu.user.entity.Role;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Set;

/**
 * 主要的功能有：
 * 1，对role表 的增删改查操作 ，baseMapper已经实现了
 * 2，对 user_role表的操作， 要对该表进行增删改查操作
 */
@Mapper
public interface RoleMapper extends BaseMapper<Role> {
    /**
     * 通过 userId和roleId 增加关系
     * @param userId
     * @param roleId
     * @return
     */
    @Insert("insert into sbn_user_role values(#{userId},#{roleId})")
    Integer addRoleForUser(String userId,String roleId);

    /**
     *通过userid 来删除 user和role的关系
     * @param userId
     * @return
     */
    @Delete("delete from sbn_user_role where user_id = #{userId}")
    Integer deleteRoleIdsByUid(String userId);

    /**
     * 通过userId来得到 所有的roleIds
     * @param userId
     * @return
     */
    @Select("select role_id from sbn_user_role where user_id = #{userId}")
    List<String> findRoleIdsByUid(String userId);

    /**
     * 通过 用户 id 来得到 该用户的权限信息
     * @param userId
     * @return
     */
    @Select("select r.* from sbn_user_role ur left join sbn_role r on ur.role_id = r.id where ur.user_id = #{userId}")
    List<Role> getRolesByUid(String userId);
    @Select("select r.role_name from sbn_user_role ur left join sbn_role r on ur.role_id = r.id where ur.user_id = #{userId}")
    Set<String> getRoleNamesByUid(String userId);
}
